package com.cencat.order.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.experimental.Accessors;

import java.io.Serializable;
import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 司机信息视图对象
 * 
 * @author cencat
 * @date 2024-01-20
 */
@Data
@Accessors(chain = true)
public class DriverVO implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 司机ID
     */
    private Long driverId;

    /**
     * 司机编号
     */
    private String driverCode;

    /**
     * 司机姓名
     */
    private String driverName;

    /**
     * 手机号码
     */
    private String phoneNumber;

    /**
     * 身份证号
     */
    private String idCard;

    /**
     * 驾驶证号
     */
    private String licenseNumber;

    /**
     * 驾驶证类型
     */
    private String licenseType;

    /**
     * 驾驶证有效期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDateTime licenseExpiry;

    /**
     * 车牌号
     */
    private String vehicleNumber;

    /**
     * 车辆类型
     */
    private String vehicleType;

    /**
     * 载重量(吨)
     */
    private BigDecimal loadCapacity;

    /**
     * 司机状态(0-离线 1-在线 2-忙碌 3-休息)
     */
    private Integer driverStatus;

    /**
     * 司机状态描述
     */
    private String driverStatusDesc;

    /**
     * 当前位置经度
     */
    private BigDecimal currentLongitude;

    /**
     * 当前位置纬度
     */
    private BigDecimal currentLatitude;

    /**
     * 当前位置地址
     */
    private String currentAddress;

    /**
     * 位置更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime locationUpdateTime;

    /**
     * 认证状态(0-未认证 1-认证中 2-已认证 3-认证失败)
     */
    private Integer authStatus;

    /**
     * 认证状态描述
     */
    private String authStatusDesc;

    /**
     * 评分
     */
    private BigDecimal rating;

    /**
     * 完成订单数
     */
    private Integer completedOrders;

    /**
     * 总收入
     */
    private BigDecimal totalIncome;

    /**
     * 本月收入
     */
    private BigDecimal monthlyIncome;

    /**
     * 在线时长(小时)
     */
    private BigDecimal onlineHours;

    /**
     * 最后登录时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastLoginTime;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}